Presto CLI এবং Basic Query Execution

Database Tutorials - অ্যাপাচি প্রেস্টো (Apache Presto)
203
203

Presto CLI (Command Line Interface) একটি শক্তিশালী টুল যা ব্যবহারকারীদের Presto সার্ভারে SQL কোয়েরি চালানোর জন্য কমান্ড লাইন থেকে সরাসরি সংযোগ স্থাপন করতে সহায়ক। Presto CLI ব্যবহার করা খুবই সহজ, এবং এটি ব্যবহারে ব্যবহারকারী তাদের কোয়েরি কার্যকরভাবে এবং দ্রুত চালাতে পারে।


Presto CLI ইনস্টল এবং ব্যবহার

১. Presto CLI ইনস্টল করা

Presto CLI ইনস্টল করা খুব সহজ। Presto সার্ভার ইনস্টলেশনের পরে CLI টুলটি Presto সার্ভারের ডিস্ট্রিবিউশন প্যাকেজে অন্তর্ভুক্ত থাকে।

ধাপ ১: Presto CLI ডাউনলোড এবং ইনস্টল করা Presto CLI ইনস্টল করার জন্য আপনাকে শুধুমাত্র presto-cli ফাইলটি ডাউনলোড করতে হবে এবং সেটি আপনার সিস্টেমে রানযোগ্য করতে হবে।

# ডাউনলোড করার জন্য
wget https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/350/presto-cli-350-executable.jar

# ফাইলকে রানযোগ্য (executable) ফাইলে রূপান্তর করুন
chmod +x presto-cli-350-executable.jar

এখন আপনি presto-cli ফাইলটি রান করতে পারবেন।


২. Presto CLI চালানো

CLI চালানোর জন্য নিচের কমান্ড ব্যবহার করুন:

java -jar presto-cli-350-executable.jar --server <presto-server-ip>:8080 --catalog <catalog-name> --schema <schema-name>
  • :8080: Presto সার্ভারের IP ঠিকানা এবং পোর্ট।
  • : Presto ক্যাটালগ (যেমন hive, mysql, postgres ইত্যাদি)।
  • : যেকোনো নির্দিষ্ট স্কিমা (যেমন default বা আপনার নির্দিষ্ট স্কিমা নাম)।

CLI চালানোর পর আপনাকে Presto-এর SQL প্রম্পট (পিপিটি) দেখতে পাবেন, যেখানে আপনি SQL কোয়েরি চালাতে পারবেন।


৩. Basic SQL Query Execution

Presto CLI ব্যবহার করে আপনি সহজ SQL কোয়েরি চালাতে পারেন। নিচে কিছু সাধারণ SQL কোয়েরি দেওয়া হলো:

SELECT Query

ডেটা পড়তে SELECT কোয়েরি ব্যবহার করুন:

SELECT * FROM <table-name> LIMIT 10;

এটি একটি নির্দিষ্ট টেবিল থেকে প্রথম ১০টি রেকর্ড নিয়ে আসবে।

JOIN Query

Presto তে দুইটি টেবিলকে JOIN করা খুবই সহজ:

SELECT a.column1, b.column2
FROM table_a a
JOIN table_b b ON a.id = b.id;

এই কোয়েরিটি দুটি টেবিলের id কলামের উপর JOIN করবে।

WHERE Clause

বিশেষ শর্তে ডেটা ফিল্টার করতে WHERE ক্লজ ব্যবহার করুন:

SELECT * FROM <table-name>
WHERE column_name = 'value';

এই কোয়েরিটি শুধুমাত্র নির্দিষ্ট column_name এর মান 'value' যেগুলি রয়েছে, সেগুলি প্রদর্শন করবে।

Aggregate Functions

ডেটার উপর সঞ্চালন করার জন্য COUNT, SUM, AVG প্রভৃতি aggregate functions ব্যবহার করা যেতে পারে:

SELECT COUNT(*) FROM <table-name>;

এটি টেবিলের মোট রেকর্ডের সংখ্যা প্রদান করবে।

GROUP BY Clause

ডেটা গ্রুপ করার জন্য GROUP BY ক্লজ ব্যবহার করুন:

SELECT column_name, COUNT(*)
FROM <table-name>
GROUP BY column_name;

এটি নির্দিষ্ট কলামের মান অনুযায়ী গ্রুপ করবে এবং প্রতিটি গ্রুপের সংখ্যা গণনা করবে।


৪. Presto CLI তে Subqueries এবং Nested Queries চালানো

Presto CLI তে Subqueries বা Nested Queries ব্যবহার করা সম্ভব। এটি জটিল কুয়েরি সমাধানে সহায়ক। উদাহরণস্বরূপ:

SELECT column1
FROM table_a
WHERE column2 IN (SELECT column2 FROM table_b);

এটি প্রথম টেবিলের মধ্যে থাকা কলামের মানগুলির সাথে দ্বিতীয় টেবিলের মানগুলিকে মেলাবে।


৫. Presto CLI ব্যবহার করে অন্যান্য কার্যক্রম

Presto CLI ব্যবহার করে আপনি কোয়েরি চালানোর পাশাপাশি আরও কিছু কাজ করতে পারেন, যেমন:

  • কোয়েরি রেসাল্ট ফরম্যাট: আপনি কোয়েরি রেজাল্টটি বিভিন্ন ফরম্যাটে দেখতে পারেন, যেমন JSON, CSV, TSV, ইত্যাদি। উদাহরণ:
java -jar presto-cli-350-executable.jar --server <presto-server-ip>:8080 --catalog <catalog-name> --schema <schema-name> --output-format json
  • কোয়েরি টাইম আউট নির্ধারণ করা: আপনি আপনার কোয়েরি টাইম আউট নির্ধারণ করতে পারেন, যাতে দীর্ঘ সময় চলতে থাকা কোয়েরি বন্ধ হয়ে যায়।

৬. Presto CLI এর উন্নত ব্যবহার

Presto CLI তে আরও উন্নত কুয়েরি অপশন রয়েছে, যেমন:

  • Query History: গত কুয়েরি ইতিহাস দেখতে পারেন।
  • Explain Plan: কোয়েরির কার্যকারিতা বিশ্লেষণ করতে EXPLAIN ব্যবহার করতে পারেন:
EXPLAIN SELECT * FROM <table-name>;

এটি কোয়েরির এক্সিকিউশন প্ল্যান প্রদান করবে, যা কোয়েরি অপটিমাইজেশনে সহায়ক হতে পারে।


সারাংশ

Presto CLI ব্যবহার করে সহজ এবং দ্রুত SQL কোয়েরি চালানো সম্ভব। এটি Presto সার্ভারে সংযোগ করে ডেটা বিশ্লেষণ, ফিল্টারিং, যোগ, এবং আরও অনেক কিছু করতে সহায়ক। এর বিভিন্ন ফিচার এবং অপশন ব্যবহার করে কোয়েরি অপটিমাইজেশন এবং আরও উন্নত কার্যক্রম করা যেতে পারে।

Content added By

Presto CLI ইনস্টল এবং ব্যবহার

213
213

Presto CLI (Command Line Interface) ব্যবহারকারীদের Presto সার্ভারে কোয়েরি পাঠানোর একটি সরল এবং দ্রুত উপায় প্রদান করে। CLI আপনাকে SQL কোয়েরি চালাতে এবং ফলাফল দেখতে সাহায্য করে। এটি বিশেষত ডেভেলপার এবং ডেটা সায়েন্টিস্টদের জন্য উপকারী যারা সরাসরি টার্মিনাল বা স্ক্রিপ্টিং মাধ্যমে কোয়েরি চালাতে চান।


১. Presto CLI ইনস্টলেশন

ধাপ ১: Presto CLI ডাউনলোড করা

Presto CLI ইনস্টল করার জন্য আপনাকে প্রথমে presto-cli নামক একটি টুল ডাউনলোড করতে হবে। এটি Presto ডিস্ট্রিবিউশন থেকে আলাদা একটি কম্পোনেন্ট যা সরাসরি সার্ভার থেকে কোয়েরি পাঠানোর জন্য ব্যবহৃত হয়।

wget https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/350/presto-cli-350-executable.jar
chmod +x presto-cli-350-executable.jar
mv presto-cli-350-executable.jar /usr/local/bin/presto

এই কমান্ডগুলি ব্যবহার করে Presto CLI ডাউনলোড এবং ইনস্টল করা হবে।

ধাপ ২: Presto CLI চালানো

CLI ইনস্টল হওয়ার পর, আপনি নিচের কমান্ডের মাধ্যমে Presto CLI চালাতে পারেন:

presto --server <coordinator-ip>:8080 --catalog <catalog-name> --schema <schema-name>

এখানে:

  • <coordinator-ip>: Presto Coordinator নোডের IP ঠিকানা।
  • <catalog-name>: সংযুক্ত ডেটাবেস ক্যাটালগের নাম (যেমন hive, mysql, postgres ইত্যাদি)।
  • <schema-name>: ডেটাবেস স্কিমা (যেমন default বা অন্য স্কিমা নাম)।

২. Presto CLI এর মাধ্যমে কোয়েরি চালানো

Presto CLI চালানোর পর আপনি সরাসরি SQL কোয়েরি টাইপ করতে পারেন। নিচে কিছু সাধারণ SQL কোয়েরির উদাহরণ দেওয়া হলো:

ধাপ ১: একটি বেসিক SQL কোয়েরি চালানো

আপনি সহজ একটি SQL কোয়েরি চালাতে পারেন, যেমন:

SELECT * FROM <table-name> LIMIT 10;

এখানে, <table-name> হল আপনার ডেটাবেসের টেবিলের নাম, এবং LIMIT 10 প্রথম ১০টি রেকর্ড ফেরত দেবে।

ধাপ ২: Join ব্যবহার করে কোয়েরি

আপনি একাধিক টেবিলের মধ্যে জয়েন করতে পারেন। উদাহরণস্বরূপ:

SELECT a.column_name, b.column_name 
FROM table_a a
JOIN table_b b ON a.id = b.id
WHERE a.status = 'active';

এখানে table_a এবং table_b দুটি টেবিলের মধ্যে id কলামে যোগসূত্র ঘটানো হয়েছে।

ধাপ ৩: Aggregation ফাংশন ব্যবহার

Presto CLI-এ আপনি গ্রুপিং এবং অ্যাগ্রিগেট ফাংশন ব্যবহার করতে পারেন, যেমন:

SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department;

এটি employees টেবিল থেকে প্রতিটি department অনুযায়ী কর্মচারীর সংখ্যা গণনা করবে।


৩. Presto CLI তে অন্যান্য ফিচার ব্যবহার

১. Query History:
Presto CLI স্বয়ংক্রিয়ভাবে পূর্ববর্তী কোয়েরিগুলির একটি ইতিহাস রাখে। আপনি \s কমান্ড ব্যবহার করে ইতিহাস দেখতে পারেন।

২. Query Timeout সেট করা:
Presto CLI-এ আপনি কোয়েরি টাইমআউট সেট করতে পারেন, যাতে দীর্ঘ সময় ধরে চলমান কোয়েরি বন্ধ হয়ে যায়।

SET SESSION query_max_run_time = '5m';

৩. Query Results Format:
আপনি ফলাফল ফরম্যাটটি পরিবর্তন করতে পারেন। উদাহরণস্বরূপ:

SELECT * FROM employees FORMAT CSV;

এটি ফলাফলটি CSV ফরম্যাটে প্রদর্শন করবে।

৪. Query Output Limit:
কোয়েরি ফলাফল সীমাবদ্ধ করার জন্য LIMIT ক্লজ ব্যবহার করা হয়।

SELECT * FROM employees LIMIT 20;

এটি শুধুমাত্র প্রথম ২০টি রেকর্ড দেখাবে।


৪. Presto CLI তে কমান্ড এবং অপশন

Presto CLI কিছু গুরুত্বপূর্ণ অপশন সহ আসে যা কোয়েরি ম্যানেজমেন্টে সহায়ক:

  • \q: Presto CLI থেকে বের হতে।
  • \h: সাহায্য পেতে।
  • \s: কোয়েরি ইতিহাস দেখতে।
  • \T: বর্তমান কনফিগারেশন দেখানোর জন্য।

৫. Presto CLI তে কনফিগারেশন পরিবর্তন

Presto CLI ব্যবহার করার সময় যদি কোনো সমস্যা দেখা দেয়, তাহলে আপনি config.properties এবং node.properties কনফিগারেশন ফাইলগুলির মধ্যে নির্দিষ্ট সেটিংস পরিবর্তন করে সমস্যার সমাধান করতে পারেন।


৬. Troubleshooting

  • Connection Issues:
    যদি আপনি Presto CLI দিয়ে সংযোগ করতে না পারেন, তবে নিশ্চিত করুন যে:
    • Coordinator নোডটি সঠিকভাবে চলছে।
    • আপনার ফায়ারওয়াল সেটিংস বা নেটওয়ার্ক সংযোগ সমস্যাযুক্ত নয়।
  • Query Errors:
    কোয়েরি ভুল হলে, Presto CLI তে একটি ত্রুটি বার্তা দেখাবে। ত্রুটির মেসেজের মাধ্যমে আপনি সমস্যা চিহ্নিত করতে পারবেন।

Presto CLI ব্যবহার করে আপনি সহজে এবং দ্রুত Presto সার্ভারে কোয়েরি চালাতে পারবেন। এটি ডেভেলপার এবং ডেটা সায়েন্টিস্টদের জন্য একটি কার্যকরী টুল, যেটি ডেটা বিশ্লেষণ এবং স্ক্রিপ্টিং করতে সহায়ক।

Content added By

বেসিক SQL Query চালানো

167
167

Presto একটি SQL কোয়েরি ইঞ্জিন, যা SQL ভাষার উপর ভিত্তি করে ডেটা প্রসেসিং করে। Presto-তে বেসিক SQL কোয়েরি চালানো খুবই সহজ এবং এর সাথে সংযুক্ত ডেটাবেস বা ডেটাসোর্স থেকে ডেটা তুলে আনতে SQL ব্যবহার করা হয়।

এখানে Presto-তে বেসিক SQL কোয়েরি চালানোর কিছু উদাহরণ দেওয়া হলো।


১. SELECT Query

SELECT কোয়েরি ব্যবহার করে টেবিল থেকে ডেটা বের করা হয়।

SELECT * FROM employees;

এটি employees টেবিলের সমস্ত রেকর্ড এবং কলাম নির্বাচন করবে।

Specific Columns নির্বাচন:

SELECT first_name, last_name FROM employees;

এটি employees টেবিলের শুধুমাত্র first_name এবং last_name কলামগুলির ডেটা প্রদর্শন করবে।


২. WHERE Clause ব্যবহার করা

WHERE ক্লজটি কোয়েরির জন্য শর্তাবলী যোগ করতে ব্যবহার করা হয়।

SELECT * FROM employees WHERE department = 'Sales';

এটি employees টেবিল থেকে শুধুমাত্র Sales বিভাগের কর্মচারীদের রেকর্ড তুলে আনবে।


৩. LIMIT Clause ব্যবহার করা

LIMIT ক্লজটি নির্দিষ্ট সংখ্যা পর্যন্ত রেকর্ড সিলেক্ট করতে ব্যবহার করা হয়।

SELECT * FROM employees LIMIT 5;

এটি employees টেবিলের প্রথম 5টি রেকর্ড নির্বাচন করবে।


৪. ORDER BY Clause ব্যবহার করা

ORDER BY ক্লজটি রেকর্ডগুলো সোর্ট করতে ব্যবহার করা হয়। এটি ASC (অ্যাসেনডিং) বা DESC (ডিসেনডিং) ব্যবহার করে সোর্টিং করতে পারে।

SELECT * FROM employees ORDER BY first_name ASC;

এটি employees টেবিলের ডেটাকে first_name কলামের আদ্যক্ষর অনুযায়ী ASC (অ্যাসেনডিং) অর্ডারে সোর্ট করবে।

DESC সোর্টিং:

SELECT * FROM employees ORDER BY salary DESC;

এটি employees টেবিলের রেকর্ডগুলো salary কলাম অনুযায়ী DESC (ডিসেনডিং) অর্ডারে সোজা করে দেখাবে।


৫. DISTINCT ব্যবহার করা

DISTINCT ব্যবহার করে একটি কলামের সমস্ত ইউনিক (অদ্বিতীয়) মান নির্বাচন করা যায়।

SELECT DISTINCT department FROM employees;

এটি employees টেবিলের সমস্ত ইউনিক department মানগুলো প্রদর্শন করবে।


৬. Aggregate Functions

Presto-তে বিভিন্ন aggregate functions যেমন COUNT(), SUM(), AVG(), MIN(), এবং MAX() ব্যবহার করা যায় ডেটার সারাংশ তৈরি করতে।

COUNT() ব্যবহার করা:

SELECT COUNT(*) FROM employees;

এটি employees টেবিলের মোট রেকর্ডের সংখ্যা দেখাবে।

SUM() ব্যবহার করা:

SELECT SUM(salary) FROM employees;

এটি employees টেবিলের সকল কর্মচারীর মোট salary যোগফল দেখাবে।

AVG() ব্যবহার করা:

SELECT AVG(salary) FROM employees;

এটি employees টেবিলের কর্মচারীদের গড় salary দেখাবে।


৭. GROUP BY Clause ব্যবহার করা

GROUP BY ব্যবহার করে নির্দিষ্ট কলামগুলোর ভিত্তিতে গ্রুপ তৈরি করা হয় এবং তারপর aggregate functions প্রয়োগ করা হয়।

SELECT department, AVG(salary) FROM employees GROUP BY department;

এটি employees টেবিলের প্রতি department-এর গড় salary দেখাবে।


৮. HAVING Clause ব্যবহার করা

HAVING ক্লজটি গ্রুপের উপর শর্তাবলী প্রয়োগ করতে ব্যবহার করা হয়, যা GROUP BY এর পরে প্রযোজ্য।

SELECT department, AVG(salary) FROM employees GROUP BY department HAVING AVG(salary) > 50000;

এটি শুধুমাত্র তাদের department দেখাবে, যাদের গড় salary 50,000-এর বেশি।


৯. JOIN ব্যবহার করা

Presto-তে একাধিক টেবিলের মধ্যে সম্পর্ক স্থাপন করার জন্য JOIN ব্যবহার করা হয়। Presto সাপোর্ট করে বিভিন্ন ধরনের JOIN, যেমন INNER JOIN, LEFT JOIN, RIGHT JOIN, এবং FULL JOIN।

INNER JOIN উদাহরণ:

SELECT employees.first_name, employees.last_name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.department_id;

এটি employees এবং departments টেবিলের মধ্যে সম্পর্ক তৈরি করবে যেখানে employees.department_id এবং departments.department_id সমান হবে।


এই ছিল Presto-তে বেসিক SQL Query চালানোর কিছু সাধারণ উদাহরণ। আপনি এই কোয়েরিগুলো ব্যবহার করে ডেটাবেস থেকে তথ্য সংগ্রহ, বিশ্লেষণ এবং ফলাফল সজ্জিত করতে পারবেন।

Content added By

Joins, Filters এবং Aggregation ব্যবহার

209
209

Presto হল একটি SQL ভিত্তিক ডিস্ট্রিবিউটেড কোয়েরি ইঞ্জিন, এবং এটি বড় ডেটাসেটের জন্য বিভিন্ন ধরনের SQL অপারেশন করতে সক্ষম। এই টিউটোরিয়ালে আমরা দেখবো কীভাবে Presto তে Joins, Filters, এবং Aggregation ব্যবহার করা যায়।


১. Joins ব্যবহার

Presto তে Joins ব্যবহার করে একাধিক টেবিলের ডেটা একত্র করা যায়। Presto সমস্ত স্ট্যান্ডার্ড SQL Join অপারেশন সাপোর্ট করে, যেমন INNER JOIN, LEFT JOIN, RIGHT JOIN, এবং FULL JOIN। নিচে কিছু উদাহরণ দেওয়া হলো:

INNER JOIN

INNER JOIN টেবিলগুলোর মিলিত রেকর্ডগুলো দেখায় যেখানে দুটি টেবিলের মধ্যে সম্পর্ক রয়েছে।

উদাহরণ:

SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers
ON orders.customer_id = customers.customer_id;

এই কোয়েরিটি orders এবং customers টেবিলের মধ্যে customer_id এর মাধ্যমে মিলে যাওয়া রেকর্ডগুলো নির্বাচন করবে।

LEFT JOIN

LEFT JOIN বা LEFT OUTER JOIN টেবিলের বাম পাশে থাকা টেবিলের সব রেকর্ড সহ, ডান পাশের টেবিলের মিলিত রেকর্ডগুলো দেখায়।

উদাহরণ:

SELECT customers.customer_name, orders.order_id
FROM customers
LEFT JOIN orders
ON customers.customer_id = orders.customer_id;

এই কোয়েরিটি customers টেবিলের সব রেকর্ড এবং মেলে এমন orders রেকর্ডগুলো দেখাবে। যদি কোন customer_id এর সাথে মিল না থাকে, তবে order_id এর মান NULL হবে।

RIGHT JOIN

RIGHT JOIN হল LEFT JOIN এর বিপরীত, যেখানে ডান পাশে থাকা টেবিলের সব রেকর্ড দেখানো হয়।

উদাহরণ:

SELECT orders.order_id, customers.customer_name
FROM orders
RIGHT JOIN customers
ON orders.customer_id = customers.customer_id;

এটি orders টেবিলের সব রেকর্ড এবং মেলে এমন customers রেকর্ডগুলো দেখাবে।

FULL OUTER JOIN

FULL OUTER JOIN টেবিলের উভয় পাশের সমস্ত রেকর্ড দেখায়, এবং যেখানেই মেলানো যাবে না, সেখানেই NULL দেখাবে।

উদাহরণ:

SELECT orders.order_id, customers.customer_name
FROM orders
FULL OUTER JOIN customers
ON orders.customer_id = customers.customer_id;

এটি orders এবং customers টেবিলের সমস্ত রেকর্ড দেখাবে, যেখানে মেলানো যায় না, সেখানে NULL দেখানো হবে।


২. Filters ব্যবহার

Presto তে Filters ব্যবহার করে আপনি নির্দিষ্ট শর্ত অনুসারে ডেটা ফিল্টার করতে পারেন। SQL তে WHERE ক্লজ ব্যবহার করে ফিল্টারিং করা হয়।

উদাহরণ:

SELECT order_id, customer_name, order_date
FROM orders
WHERE order_date > '2023-01-01'
AND total_amount > 100;

এই কোয়েরিটি orders টেবিল থেকে এমন সমস্ত অর্ডার বের করবে যার order_date ২০২৩ সালের ১ জানুয়ারি বা তার পরের এবং total_amount ১০০ এর বেশি।

LIKE Filter

LIKE ফিল্টার ব্যবহার করে প্যাটার্ন মিলিয়ে ডেটা ফিল্টার করা যায়।

উদাহরণ:

SELECT customer_name, email
FROM customers
WHERE email LIKE '%@gmail.com';

এটি সমস্ত customers টেবিলের রেকর্ড ফিরিয়ে দেবে, যাদের ইমেইল ঠিকানায় @gmail.com থাকবে।

IN Filter

IN ফিল্টার ব্যবহার করে একাধিক মানের মধ্যে ডেটা খোঁজা যায়।

উদাহরণ:

SELECT order_id, order_date
FROM orders
WHERE order_id IN (1, 2, 3, 5);

এটি orders টেবিল থেকে সেই রেকর্ডগুলো ফিরিয়ে দেবে যেগুলোর order_id ১, ২, ৩, অথবা ৫।


৩. Aggregation ব্যবহার

Presto তে Aggregation ব্যবহার করে ডেটার উপর বিভিন্ন গণনা করা যায়, যেমন মোট, গড়, মিনিমাম, ম্যাক্সিমাম ইত্যাদি। GROUP BY এবং HAVING ক্লজগুলি Aggregation অপারেশনের সাথে ব্যবহৃত হয়।

SUM()

SUM() ফাংশন মোট মান বের করতে ব্যবহৃত হয়।

উদাহরণ:

SELECT customer_id, SUM(total_amount) AS total_spent
FROM orders
GROUP BY customer_id;

এই কোয়েরিটি orders টেবিল থেকে প্রতিটি customer_id এর জন্য মোট খরচ (sum) বের করবে।

AVG()

AVG() ফাংশন গড় বের করতে ব্যবহৃত হয়।

উদাহরণ:

SELECT AVG(total_amount) AS average_order_value
FROM orders;

এই কোয়েরিটি সমস্ত অর্ডারের গড় মান বের করবে।

COUNT()

COUNT() ফাংশন রেকর্ডের সংখ্যা গননা করতে ব্যবহৃত হয়।

উদাহরণ:

SELECT customer_id, COUNT(order_id) AS total_orders
FROM orders
GROUP BY customer_id;

এই কোয়েরিটি প্রতিটি customer_id এর জন্য মোট অর্ডারের সংখ্যা বের করবে।

MAX() এবং MIN()

MAX() এবং MIN() ফাংশন যথাক্রমে সর্বোচ্চ এবং সর্বনিম্ন মান বের করতে ব্যবহৃত হয়।

উদাহরণ:

SELECT MAX(total_amount) AS max_order_value, MIN(total_amount) AS min_order_value
FROM orders;

এই কোয়েরিটি সমস্ত অর্ডারের মধ্যে সর্বোচ্চ এবং সর্বনিম্ন অর্ডারের মূল্য বের করবে।

GROUP BY এবং HAVING

GROUP BY ডেটাকে একটি নির্দিষ্ট কলামের উপর ভিত্তি করে গ্রুপ করে এবং HAVING শর্ত নির্ধারণের জন্য ব্যবহৃত হয় (যা WHERE এর মতো, তবে এটি গ্রুপড ডেটার জন্য ব্যবহার হয়)।

উদাহরণ:

SELECT customer_id, SUM(total_amount) AS total_spent
FROM orders
GROUP BY customer_id
HAVING SUM(total_amount) > 500;

এই কোয়েরিটি সেই customer_id গুলির জন্য মোট খরচ বের করবে যাদের খরচ ৫০০ এর বেশি।


সারাংশ

  • Joins: একাধিক টেবিলের মধ্যে সম্পর্ক তৈরি করে ডেটা একত্র করতে ব্যবহৃত হয়।
  • Filters: ডেটা ফিল্টার করার জন্য ব্যবহৃত হয়, যেমন WHERE, LIKE, IN
  • Aggregation: ডেটার উপর গণনা করতে ব্যবহৃত হয়, যেমন SUM, AVG, COUNT, MAX, এবং MIN

Presto তে এই অপারেশনগুলি ব্যবহার করে আপনি বড় ডেটাসেটের উপর দ্রুত এবং কার্যকরীভাবে বিভিন্ন ধরনের বিশ্লেষণ করতে পারেন।

Content added By

Complex Query এবং Subqueries পরিচালনা

161
161

Presto ব্যবহার করে Complex Queries এবং Subqueries পরিচালনা করা একটি শক্তিশালী বৈশিষ্ট্য, যা বড় এবং জটিল ডেটা বিশ্লেষণের জন্য উপযুক্ত। এখানে আমরা দেখব কিভাবে Presto-তে জটিল কোয়েরি তৈরি এবং ব্যবহার করা যায়, এবং Subqueries কিভাবে কার্যকরভাবে ব্যবহার করা যায়।


Complex Query (জটিল কোয়েরি)

Complex Query সাধারণত একাধিক টেবিল বা ডেটাসোর্সের উপর কাজ করে এবং বিভিন্ন SQL অপারেশন যেমন Joins, Aggregations, Filters, এবং Grouping সমন্বিত করে।

১. Joins ব্যবহার করে Complex Query

Presto সমর্থন করে বিভিন্ন ধরনের Joins, যেমন INNER JOIN, LEFT JOIN, RIGHT JOIN, এবং FULL JOIN

উদাহরণ:

SELECT orders.order_id, customers.customer_name, SUM(orders.amount) AS total_amount
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id
GROUP BY orders.order_id, customers.customer_name
ORDER BY total_amount DESC;

এই কোয়েরিটি দুটি টেবিল orders এবং customers কে INNER JOIN করে এবং প্রতিটি অর্ডারের মোট পরিমাণ হিসাব করে, গ্রাহকের নামের সাথে।

২. Aggregation এবং Grouping

Presto-তে Aggregation Functions যেমন SUM(), AVG(), COUNT(), এবং MAX() ব্যবহার করা হয় জটিল কোয়েরি তৈরি করতে।

উদাহরণ:

SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department
ORDER BY average_salary DESC;

এখানে employees টেবিল থেকে প্রতি বিভাগে গড় বেতন বের করা হয়েছে।

৩. Filters এবং Conditions

WHERE এবং HAVING ক্লজ ব্যবহার করে Filters যোগ করা হয়। WHERE কোয়েরির শুরুর দিকে ডেটা ফিল্টার করে, এবং HAVING গ্রুপিংয়ের পরে ডেটা ফিল্টার করে।

উদাহরণ:

SELECT department, COUNT(*) AS num_employees
FROM employees
WHERE salary > 50000
GROUP BY department
HAVING COUNT(*) > 5
ORDER BY num_employees DESC;

এই কোয়েরিটি দেখায় যে কোন কোন বিভাগের ৫০,০০০ টাকার বেশি বেতন পাওয়া কর্মচারী আছে এবং সেই বিভাগে কমপক্ষে ৫ জন কর্মচারী রয়েছে।


Subqueries (সাবকোয়েরি)

Subqueries হল একটি কোয়েরি যা আরেকটি কোয়েরির মধ্যে ব্যবহৃত হয়। Subquery সাধারণত WHERE, FROM, অথবা SELECT ক্লজের মধ্যে অন্তর্ভুক্ত করা হয়।

১. Subquery in WHERE Clause

এটি সাধারণত একটি ভ্যালু বা আউটপুট পাওয়ার জন্য ব্যবহৃত হয়, যা মূল কোয়েরির WHERE ক্লজে ফিল্টার করার জন্য ব্যবহৃত হয়।

উদাহরণ:

SELECT employee_name, salary
FROM employees
WHERE department_id = (SELECT department_id FROM departments WHERE department_name = 'Sales');

এখানে, Subquery প্রথমে Sales বিভাগের department_id বের করে, এবং মূল কোয়েরি তার মাধ্যমে employees টেবিল থেকে সেই বিভাগের কর্মচারীদের বের করে।

২. Subquery in SELECT Clause

কখনো কখনো সাবকোয়েরি মূল কোয়েরির একটি অংশ হিসেবে ব্যবহার করা হয়, যেমন একটি কাস্টম কলাম তৈরি করা।

উদাহরণ:

SELECT employee_name, 
       (SELECT department_name FROM departments WHERE departments.department_id = employees.department_id) AS department
FROM employees;

এখানে, সাবকোয়েরি প্রতিটি কর্মচারীর জন্য তাদের department_name সংগ্রহ করে এবং তা একটি নতুন কলামে department নামে যোগ করে।

৩. Correlated Subquery

Correlated Subquery এমন একটি সাবকোয়েরি যা মূল কোয়েরির প্রতিটি সারির জন্য একটি আলাদা সাবকোয়েরি চালায়। এটি মূল কোয়েরির প্রতিটি রেকর্ডের উপর নির্ভরশীল।

উদাহরণ:

SELECT employee_name, salary
FROM employees e1
WHERE salary > (SELECT AVG(salary) FROM employees e2 WHERE e1.department_id = e2.department_id);

এখানে, সাবকোয়েরি প্রতিটি কর্মচারীর department_id এর জন্য গড় বেতন বের করে এবং তারপর প্রধান কোয়েরি সেই কর্মচারীদের নির্বাচন করে, যাদের বেতন গড় বেতনের চেয়ে বেশি।


Complex Query এবং Subqueries সম্পর্কিত কিছু টিপস

  1. Performance Optimization:
    জটিল কোয়েরি এবং সাবকোয়েরি ব্যবহারের সময় পারফরম্যান্সের জন্য উপযুক্ত Indexes ব্যবহার করা গুরুত্বপূর্ণ। এটি কোয়েরির কার্যকারিতা উন্নত করতে সাহায্য করে।
  2. Avoiding Redundant Subqueries:
    একই সাবকোয়েরি বারবার ব্যবহৃত হলে, তা মূল কোয়েরির মধ্যে একাধিক বার চালানো হতে পারে। এই ধরনের সমস্যা থেকে মুক্তি পেতে, সাবকোয়েরির আউটপুট CTE (Common Table Expressions) হিসেবে সংরক্ষণ করা যেতে পারে।
  3. Use EXPLAIN for Query Plan:
    কোয়েরির কার্যকারিতা বিশ্লেষণ করার জন্য EXPLAIN কমান্ড ব্যবহার করুন, যা কোয়েরির এক্সিকিউশন প্ল্যান প্রদর্শন করে।

উপসংহার
Presto তে Complex Queries এবং Subqueries ব্যবহারের মাধ্যমে আপনি জটিল ডেটা বিশ্লেষণ কার্যকরভাবে করতে পারেন। সঠিকভাবে সাবকোয়েরি এবং জটিল কোয়েরি ব্যবহার করলে বড় ডেটাসেটের উপর কার্যকরী এবং দ্রুত বিশ্লেষণ করা সম্ভব।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion